/**
 * 个人基本信息模块
 *  1. 是否展示
 *  2. 内容
 *      2.1 姓名
 *      2.2 性别
 *      2.3 在读院校
 *      2.4 最高学位
 *      2.5 联系邮箱
 *      2.6 联系手机号
 *  3. 排序
 */
type BaseInfo = {
    visiable:boolean,
    content: {
        name: string,
        gender: "男" | "女",
        school: string,
        highest_degree: "学士" | "硕士" | "博士" 
        email: string,
        phone: string
    },
    index: number,
}

/**
 * 自我评价模块
 *  1. 是否展示
 *  2. 内容
 *      2.1 自我评价
 *  3. 排序
 */
type SelfEvaluation = {
    visiable:boolean,
    content: {
        self_evaluation: string
    },
    index: number
}

/**
 * 教育经历模块
 *  1. 是否展示
 *  2. 内容
 *      2.1 教育经历列表
 *          2.1.1 开始日期
 *          2.1.2 结束日期
 *          2.1.3 就读院校
 *          2.1.4 学位
 *          2.1.5 专业
 *          2.1.5 成绩
 *          2.1.5 主修课程
 *  3. 排序
 */
type EducationalExperience = {
    visiable: boolean,
    content:{
        educational_experience:EducationalExperienceUnit[]
    },
    index: number

}

type EducationalExperienceUnit = {
    begin_date: Date,
    end_date: Date,
    attend_school: string,
    degree: string,
    major: string,
    grades: string,
    major_courses: string[]
}


/**
 * 校园经历模块
 *  1. 是否展示
 *  2. 内容
 *      2.1 校园经历列表
 *          2.1.1 开始日期
 *          2.1.2 结束日期
 *          2.1.3 经历列表
 *  3. 排序
 */
type CampusExperience = {
    visiable: boolean,
    content:{
        campus_experience:CampusExperienceUnit[]
    },
    index: number
}
type CampusExperienceUnit = {
    begin_date: Date,
    end_date: Date,
    experinece: string[],
}

/**
 * 专业技能模块
 *  1. 是否展示
 *  2. 内容
 *      2.1 专业技能列表
 *  3. 排序
 */
type Expertise = {
    visiable: boolean,
    content:{
        expertises:string[]
    },
    index: number
}

/**
 * 荣誉奖项模块
 *  1. 是否展示
 *  2. 内容
 *      2.1 荣誉奖项列表
 *  3. 排序
 */
type HonoraryAwards = {
    visiable: boolean,
    content:{
        honorary_awards:HonoraryAwardsUnit[] 
    },
    index: number
}
type HonoraryAwardsUnit = {
    begin_date: Date,
    end_date: Date,
    awards: string[]
}

/**
 * 项目经历模块
 *  1. 是否展示
 *  2. 内容
 *      2.1 项目经历列表
 *          2.1.1 项目名称
 *          2.1.2 开始时间
 *          2.1.3 结束时间
 *          2.1.4 项目描述
 *          2.1.5 项目所用技术栈
 *          2.1.6 职责
 *  3. 排序
 */
type ProjectExperience = {
    visiable: boolean,
    content: {
        project_experience:ProjectExperienceUnit[]
    },
    index: number
}

type ProjectExperienceUnit = {
    project_name: string,
    begin_date: Date,
    end_date: Date,
    project_description: string,
    tech_stack: string,
    project_responsibility: string[]
}

type InternshipExperience = {
    visiable: boolean,
    content: {
        internship_experience:InternshipExperienceUnit[]
    },
    index: number

}

type InternshipExperienceUnit = {
        company: string,
        position: string,
        department: string,
        begin_date: Date,
        end_date: Date,
        project_experience:ProjectExperienceUnit[]
}



export type { BaseInfo, SelfEvaluation, EducationalExperience, Expertise, HonoraryAwards, ProjectExperience, CampusExperience,EducationalExperienceUnit, CampusExperienceUnit,ProjectExperienceUnit, HonoraryAwardsUnit, InternshipExperience,InternshipExperienceUnit }